//水仙花数第二种解法

/**
 * 先对153这个水仙花数进行分解，查看3位组成数字的规律
 * 153%10   153对10取余，得到最后一位数字3
 * 153/10   153除以10，整数除以整数，丢弃小数得到整数15，是前两位数字，继续对这两位数字分解
 * 15%10    15对10取余，得到中间数字5
 * 15/10    15除以10，整数除以整数，丢弃小数得到整数1，即第一位数字
 * 1%10     1对10取余,还是第一位数字1
 * 1/10     1除以10,丢弃小数,得到0
 * 根据上面的规律，要对每个3位长度的数字，循环处理两次，每次一个取余，一个除以10
 */
public class Shuixian_Flowers_2 {
    public static void main(String[] args) {

        for(int i=100; i<1000; i++) {
            int n=i, sum=0; //定义时必须初始化值
            while(n>0){  //循环处理两遍当前的三位数
                int x = n%10; //第一次计算，x是最后一位数字;第二次计算,n因为变成前两位数字,取余得到中间数字,赋值给此时的x;第三次计算,比10小,除不过10,取余还是自己;
                sum += x*x*x;  //第一次计算,先求最后一位数字的立方值;第二次计算,累加中间数字的立方值;第三次计算,累加第一位数字的立方值;
                n /= 10; //第一次计算，n经过计算变成前两位数字;第二次计算,n经过计算变成了第一位数字;第三次计算,第一位数字小于10,除以10丢弃小数得到0,不符合while条件,走出while循环.
            }
            if(sum==i){
                System.out.println(i+" 是水仙花");
            }
        }

    }
}
